CGI和FastCGI

概念

CGI全称是common gateway interface, 说明它是一个网关接口, 是一种协议, 没有具体实现. 和java的JDBC是一个意思.

FastCGI全称是fast common gateway interface, 它也是一个网关接口, 只是在CGI接口上做了一层封装.

但是CGI协议并没有考虑到性能问题, 实现了CGI协议的程序在执行完任务后就会销毁进程, 当有新的任务时, 又要重新启动进程.

FastCGI协议考虑到了性能问题, 实现了FastCGI协议的程序, 会先启动一个master进程作为管理员, 然后启动多个worker进程(相当于CGI)作为任务执行者. 并且这些worker进程的管理类似于线程池.

伪代码

interface CGI{
  createWorkderThenParsePhpFile();
}


interface FastCGI{
  createMasterToManageWorkers();
  createWorkderThenParsePhpFile();
}

通过上面的伪代码可以发现, FastCGI只是在CGI接口上面做了一层封装(编程就是套娃的过程), 写了一个管理方法createMasterToManageWorkers.

php-cgi和php-fpm

php-cgiphp-fpm是对CGIFastCGI的实现, 它们两个都是应用程序.

在最开始只有php-cgi, 并且实现了CGIFastCGI两种协议, 但是那个写代码的人水平不够高, 所以内部执行效率低下.

后来出现一个高手写了php-fpm应用程序, 用来实现两种协议, 这个应用程序效率很高, 被php官方盯上了, 把php-fpm收入自己腰包.(最开始php-fpm是外部插件, 现在已经内部集成).

总结

CGIFastCGI都是协议, 是一种规范. php-cgiphp-fpm都是实现了规范的程序, 其中php-fpm代码质量高, 执行效率好.

参考资料

PHP中CGI、CLI、FPM是什么 搞不清FastCgi与PHP-fpm之间是个什么样的关系 php-cli和php-fpm的关系是什么? php-cgi是php脚本的解析器吗?

THE END
推荐文章
  • wordpress给css和js文件增加时间戳,防止用户由于缓存原因不能访问最新文件

  • 黄帝内经-第41篇-刺腰痛篇(2)

  • docker网络

  • 黄帝内经-第32篇-刺热篇(1)

  • PotPlayer播放器如何设置跳过片头片尾

  • 如何获得搜索流量

  • wordpress中get_template_directory和get_template_directory_uri的区别

  • python如何安装包管理器pip

评论 共0条
文本

名字

0字

链接

链接名称

https://example.com example.com

即将访问外部链接,请注意确认目标地址的安全性

下载

名字

安全提示

本站资源均来自网络收集,下载前请注意文件安全

文件资源

文件名称

文件描述

智能体

名字

0字

输出结果

0字

开启精彩搜索

热门搜索

暂无

历史搜索

用户名/邮箱/手机号
密码
用户名
密码
重复密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
注册
找回密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

0字

0字

2024年10月

0字

0字

新增

0字

0字

新增

0字

0字